package com.hq.hotl.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hq.hotl.dao.HouseDao;
import com.hq.hotl.pojo.House;
import com.hq.hotl.pojo.PageData;
import com.hq.hotl.service.HouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
@Service
public class HouseServiceImpl implements HouseService {
    //设置页码相关的默认值
    final public static int DEFAULT_PAGENUMBER = 1;
    final public static int DEFAULT_SIZE = 5;

    //自动装配HouseDao
    @Autowired
    private HouseDao houseDao;

    //分页查询全部的house信息
    @Override
    public PageData getAllHouse(int currentPage, int pageSize) {
        //判断入参是否合理
        if (currentPage < DEFAULT_PAGENUMBER) {
            currentPage = DEFAULT_PAGENUMBER;
        }
        if (pageSize < DEFAULT_SIZE) {
            pageSize = DEFAULT_SIZE;
        }
        //利用pageHelp插件开始分页，拦截下一次mybatis操作
        PageHelper.startPage(currentPage, pageSize);
        //查询全部的House信息
        List<House> houseList = houseDao.allHouse();
        //pageInfo对象已经计算好了分页相关的所有信息
        PageInfo<House> housePageInfo = new PageInfo<>(houseList);
        //修正当前currentPage超出pageSize,改为总页数
        if (currentPage > housePageInfo.getPages()) {
            currentPage = housePageInfo.getPages();
        }
        //利用HousePageInfo对象来封装我们自定义的pagedata
        PageData<House> pageData = new PageData<>();
        //设置总页数
        pageData.setTotalPages(housePageInfo.getPages());
        //设置总记录数
        pageData.setTotalSize(housePageInfo.getTotal());
        //判断是否有上一页
        if (housePageInfo.isHasPreviousPage()) {
            //有上一页，当前页码没有在首页
            pageData.setPreviousPage(housePageInfo.getPrePage());
        } else {
            //当前页在首页
            pageData.setPreviousPage(DEFAULT_PAGENUMBER);
        }
        //判断是否有下一页
        if (housePageInfo.isHasNextPage()) {
            //还有下一页，当前页没有在尾页
            pageData.setNextPage(housePageInfo.getNextPage());
        } else {
            //当前页在尾页了
            pageData.setNextPage(housePageInfo.getPages());
        }
        //设置当前页码和每页记录数
        pageData.setCurrentPage(currentPage);
        pageData.setPageSize(pageSize);
        //返回数据类型
        pageData.setData(housePageInfo.getList());
        return pageData;
    }
//通过房间状态来查询房间信息,查询到的信息使用分页

    @Override
    public PageData getHouseByState(int currentPage,int pageSize,String state) {
        //判断入参是否合理
        if (currentPage < DEFAULT_PAGENUMBER) {
            currentPage = DEFAULT_PAGENUMBER;
        }
        if (pageSize < DEFAULT_SIZE) {
            pageSize = DEFAULT_SIZE;
        }
        //利用pageHelp插件开始分页，拦截下一次mybatis操作
        PageHelper.startPage(currentPage, pageSize);
        //查询全部的House信息
        List<House> houseList = houseDao.queryByStateYyl(state);
        //pageInfo对象已经计算好了分页相关的所有信息
        PageInfo<House> housePageInfo = new PageInfo<>(houseList);
        //修正当前currentPage超出pageSize,改为总页数
        if (currentPage > housePageInfo.getPages()) {
            currentPage = housePageInfo.getPages();
        }
        //利用HousePageInfo对象来封装我们自定义的pagedata
        PageData<House> pageData = new PageData<>();
        //设置总页数
        pageData.setTotalPages(housePageInfo.getPages());
        //设置总记录数
        pageData.setTotalSize(housePageInfo.getTotal());
        //判断是否有上一页
        if (housePageInfo.isHasPreviousPage()) {
            //有上一页，当前页码没有在首页
            pageData.setPreviousPage(housePageInfo.getPrePage());
        } else {
            //当前页在首页
            pageData.setPreviousPage(DEFAULT_PAGENUMBER);
        }
        //判断是否有下一页
        if (housePageInfo.isHasNextPage()) {
            //还有下一页，当前页没有在尾页
            pageData.setNextPage(housePageInfo.getNextPage());
        } else {
            //当前页在尾页了
            pageData.setNextPage(housePageInfo.getPages());
        }
        //设置当前页码和每页记录数
        pageData.setCurrentPage(currentPage);
        pageData.setPageSize(pageSize);
        //返回数据类型
        pageData.setData(housePageInfo.getList());
        return pageData;

    }
//通过房间号来查询房间信息
    @Override
    public PageData queryByRoomName(int currentPage, int pageSize, String name) {
        //判断入参是否合理
        if (currentPage < DEFAULT_PAGENUMBER) {
            currentPage = DEFAULT_PAGENUMBER;
        }
        if (pageSize < DEFAULT_SIZE) {
            pageSize = DEFAULT_SIZE;
        }
        //利用pageHelp插件开始分页，拦截下一次mybatis操作
        PageHelper.startPage(currentPage, pageSize);
        //查询全部的House信息
        List<House> houseList = houseDao.queryByRoomName(name);
        //pageInfo对象已经计算好了分页相关的所有信息
        PageInfo<House> housePageInfo = new PageInfo<>(houseList);
        //修正当前currentPage超出pageSize,改为总页数
        if (currentPage > housePageInfo.getPages()) {
            currentPage = housePageInfo.getPages();
        }
        //利用HousePageInfo对象来封装我们自定义的pagedata
        PageData<House> pageData = new PageData<>();
        //设置总页数
        pageData.setTotalPages(housePageInfo.getPages());
        //设置总记录数
        pageData.setTotalSize(housePageInfo.getTotal());
        //判断是否有上一页
        if (housePageInfo.isHasPreviousPage()) {
            //有上一页，当前页码没有在首页
            pageData.setPreviousPage(housePageInfo.getPrePage());
        } else {
            //当前页在首页
            pageData.setPreviousPage(DEFAULT_PAGENUMBER);
        }
        //判断是否有下一页
        if (housePageInfo.isHasNextPage()) {
            //还有下一页，当前页没有在尾页
            pageData.setNextPage(housePageInfo.getNextPage());
        } else {
            //当前页在尾页了
            pageData.setNextPage(housePageInfo.getPages());
        }
        //设置当前页码和每页记录数
        pageData.setCurrentPage(currentPage);
        pageData.setPageSize(pageSize);
        //返回数据类型
        pageData.setData(housePageInfo.getList());
        return pageData;

    }
//通过房间类型来查询房间信息
    @Override
    public PageData queryByRoomType(int currentPage, int pageSize, String type) {
        //判断入参
        if (currentPage<DEFAULT_PAGENUMBER){
            currentPage=DEFAULT_PAGENUMBER;
        }
        if (pageSize<DEFAULT_SIZE){
            pageSize=DEFAULT_SIZE;
        }
        //利用pageHelp插件来开始分页,拦截下一次mybatis操作
        PageHelper.startPage(currentPage,pageSize);
        //查询全部house信息
        List<House> houseList = houseDao.queryByRoomType(type);
        //pageInfo已经计算好了所有的分页信息
        PageInfo<House> pageInfo = new PageInfo<>(houseList);
        //修正当前currentPage超出pageSize，改为总页数
        if (currentPage>pageInfo.getPages()){
            currentPage=pageInfo.getPages();
        }
        //利用pageInfo对象来封装我们自定义的pageData
        PageData<House> pageData = new PageData<>();
        //设置总页数
        pageData.setTotalPages(pageInfo.getPages());
        //设置总记录数
        pageData.setTotalSize(pageInfo.getTotal());
        //判断是否有上一页
        if (pageInfo.isHasPreviousPage()){
            //还有上一页
            pageData.setPreviousPage(pageInfo.getPrePage());
        }
        else {
            //已经没有上一页了，当前页就是首页
            pageData.setPreviousPage(DEFAULT_PAGENUMBER);
        }
        //判断下一页页码
        if (pageInfo.isHasNextPage()){
            //还有下一页
            pageData.setNextPage(pageInfo.getNextPage());
        }
        else {
            //当前页没有下一页，表示当前就是最后一页
           pageData.setNextPage(pageInfo.getPages());
        }
        //设置当前页码和每页记录数
        pageData.setCurrentPage(currentPage);
        pageData.setPageSize(pageSize);
        pageData.setData(pageInfo.getList());
        return pageData;

    }
}
